package icu.cqcai.xinsi.domain;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 面试会话实体类
 */
public class InterviewSession {
    
    private Long id; // 会话ID
    private Long userId; // 用户ID
    private String sessionId; // 面试会话唯一标识
    private String targetPosition; // 目标岗位
    private String workExperience; // 工作经验
    private String skills; // 技能描述
    private Integer totalQuestions; // 题目总数
    private Integer answeredQuestions; // 已回答题目数
    private BigDecimal totalScore; // 总分（0-100）
    private BigDecimal positionMatchRate; // 岗位匹配度（0-100）
    private String comprehensiveRating; // 综合评级（A+,A,B+,B,C+,C,D）
    private Integer status; // 状态：1-进行中，2-已完成，0-已删除
    private LocalDateTime submitTime; // 提交时间
    private String evaluationStatus; // 评估状态
    private LocalDateTime createTime; // 创建时间
    private LocalDateTime updateTime; // 更新时间
    
    // 构造函数
    public InterviewSession() {}
    
    public InterviewSession(Long userId, String sessionId, String targetPosition, 
                          String workExperience, String skills) {
        this.userId = userId;
        this.sessionId = sessionId;
        this.targetPosition = targetPosition;
        this.workExperience = workExperience;
        this.skills = skills;
        this.totalQuestions = 0;
        this.answeredQuestions = 0;
        this.status = 1; // 默认进行中
        this.createTime = LocalDateTime.now();
        this.updateTime = LocalDateTime.now();
    }
    
    // Getter和Setter方法
    public Long getId() {
        return id;
    }
    
    public void setId(Long id) {
        this.id = id;
    }
    
    public Long getUserId() {
        return userId;
    }
    
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    
    public String getSessionId() {
        return sessionId;
    }
    
    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }
    
    public String getTargetPosition() {
        return targetPosition;
    }
    
    public void setTargetPosition(String targetPosition) {
        this.targetPosition = targetPosition;
    }
    
    public String getWorkExperience() {
        return workExperience;
    }
    
    public void setWorkExperience(String workExperience) {
        this.workExperience = workExperience;
    }
    
    public String getSkills() {
        return skills;
    }
    
    public void setSkills(String skills) {
        this.skills = skills;
    }
    
    public Integer getTotalQuestions() {
        return totalQuestions;
    }
    
    public void setTotalQuestions(Integer totalQuestions) {
        this.totalQuestions = totalQuestions;
    }
    
    public Integer getAnsweredQuestions() {
        return answeredQuestions;
    }
    
    public void setAnsweredQuestions(Integer answeredQuestions) {
        this.answeredQuestions = answeredQuestions;
    }
    
    public BigDecimal getTotalScore() {
        return totalScore;
    }
    
    public void setTotalScore(BigDecimal totalScore) {
        this.totalScore = totalScore;
    }
    
    public BigDecimal getPositionMatchRate() {
        return positionMatchRate;
    }
    
    public void setPositionMatchRate(BigDecimal positionMatchRate) {
        this.positionMatchRate = positionMatchRate;
    }
    
    public String getComprehensiveRating() {
        return comprehensiveRating;
    }
    
    public void setComprehensiveRating(String comprehensiveRating) {
        this.comprehensiveRating = comprehensiveRating;
    }
    
    public Integer getStatus() {
        return status;
    }
    
    public void setStatus(Integer status) {
        this.status = status;
    }
    
    public LocalDateTime getSubmitTime() {
        return submitTime;
    }
    
    public void setSubmitTime(LocalDateTime submitTime) {
        this.submitTime = submitTime;
    }
    
    public String getEvaluationStatus() {
        return evaluationStatus;
    }
    
    public void setEvaluationStatus(String evaluationStatus) {
        this.evaluationStatus = evaluationStatus;
    }
    
    public LocalDateTime getCreateTime() {
        return createTime;
    }
    
    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
    
    public LocalDateTime getUpdateTime() {
        return updateTime;
    }
    
    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }
    
    @Override
    public String toString() {
        return "InterviewSession{" +
                "id=" + id +
                ", userId=" + userId +
                ", sessionId='" + sessionId + '\'' +
                ", targetPosition='" + targetPosition + '\'' +
                ", workExperience='" + workExperience + '\'' +
                ", skills='" + skills + '\'' +
                ", totalQuestions=" + totalQuestions +
                ", answeredQuestions=" + answeredQuestions +
                ", totalScore=" + totalScore +
                ", positionMatchRate=" + positionMatchRate +
                ", comprehensiveRating='" + comprehensiveRating + '\'' +
                ", status=" + status +
                ", submitTime=" + submitTime +
                ", evaluationStatus='" + evaluationStatus + '\'' +
                ", createTime=" + createTime +
                ", updateTime=" + updateTime +
                '}';
    }
} 